最后更新时间:2020年12月11日
功能介绍
空间分析是从空间数据中获取有关地理对象的空间位置、分布、形态、形成和演变等信息的分析技术,是地理信息系统的核心功能之一,它特有的对地理信息的提取、表现和传输的功能,是地理信息系统区别于一般管理信息系统的主要功能特征。GIS中实现空间分析的基本功能,包括缓冲区分析、叠加分析、路径分析、空间量算、空间插值、统计分类分析等。
空间分析功能支持要素、图层的空间分析。针对几何要素间的空间分析与计算,使用com.zondy.mapgis.geometry.GeometryOperator类接口实现;针对图层类的空间分析功能,则使用com.zondy.mapgis.analysis.spatialanalysis.SpatialAnalysis类接口实现。
开发者可结合实际需求实现缓冲分析功能,所谓缓冲区就是在点、线、区实体周围建立一定宽度范围的多边形。
开发者可结合实际需求实现叠加分析功能,借助叠加分析可以进行空间数据相交、求并、相减等多种空间分析操作。
开发者可结合实际需求实现裁剪分析功能。裁剪分析支持内裁和外裁,内裁是裁剪结果保留为裁剪框边界之内的图形及相关属性;外裁是裁剪结果保留为裁剪框边界之外的图形及相关属性。
开发者可结合实际需求进行几何要素的空间计算,如计算两点距离、计算直线角度、计算两线交点等。
开发者可结合实际需求进行空间关系判别,空间关系是对空间要素的拓扑关系的判断,包括相邻、相交、相离等基本的拓扑关系。
开发者可结合实际需求实现长度量算功能,可以量算几何距离,也可以量算实地距离。
开发者可结合实际需求实现面积量算功能,可以量算几何面积,也可以量算实地面积。
功能接口
针对空间几何要素的空间分析功能对应API为com.zondy.mapgis.geometry的空间几何操作类GeometryOperator(10.3:com.zondy.mapgis.core.spatial,其核心接口为空间分析类SpaAnalysis、空间关系类SpaRelation、空间计算类SpaCalculator)。
例如,部分常用功能接口如下:
接口 | 说明 |
---|---|
GeometryOperator.buffer() | 缓冲区分析 |
GeometryOperator.overlay() | 叠加分析 |
GeometryOperator.clipGeometryByGeometry() | 区裁剪几何 |
GeometryOperator.clipGeometryByRect() | 矩形裁剪几何 |
GeometryOperator.clipDotsByRect() | 矩形裁剪 |
提供几何要素空间关系计算,即拓扑关系分析计算功能。
接口 | 说明 |
---|---|
GeometryOperator.equals() | 相同 |
GeometryOperator.crosses() | 穿越相交 |
GeometryOperator.contains() | 包含 |
GeometryOperator.covers() | 覆盖 |
GeometryOperator.coveredBy() | 被覆盖 |
GeometryOperator.disjoint() | 相离 |
GeometryOperator.intersects() | 相交 |
GeometryOperator.touches() | 相接 |
GeometryOperator.difference() | 求差 |
GeometryOperator.intersection() | 求交 |
GeometryOperator.symDifference() | 求对称差 |
GeometryOperator.union() | 求并 |
GeometryOperator.within() | 点在区内 |
提供几何空间要素间的距离计算、交点计算、周长面积计算等功能。
接口 | 说明 |
---|---|
GeometryOperator.calculateDistance()/td> | 计算两点距离 |
GeometryOperator.calculateDistanceDotToLine() | 计算点到折线的距离 |
GeometryOperator.calculateIntersectionLineLine() | 计算折线与折线交点 |
GeometryOperator.calculateLineLength() | 计算折线长度 |
GeometryOperator.calculatePolygonPerimeter() | 计算区周长 |
GeometryOperator.calculateArea() | 计算区面积 |
说明:另外,com.zondy.mapgis.spatial.SpaCalculator类也提供一些空间计算方法,为上层应用服务。例如,计算两点具体的方法:SpaCalculator.distance()。
接口 | 说明 |
---|---|
Angle.calculateAzimuth() | 计算方位角 |
Angle.calculateSlopeAngle() | 计算坡度角 |
Angle.calculateVectorAngle() | 计算向量夹角 |
Angle.calculateVectorRotateAngle() | 计算向量旋转角 |
针对空间投影,com.zondy.mapgis.geometry.GeometryOperator类提供project()接口实现。另外,com.zondy.mapgis.spatial.SpaProjection类也提供如下一些空间投影常用方法,为上层应用服务:
接口 | 说明 |
---|---|
SpaProjection.projTrans() | 单点投影 |
SpaProjection.lonLat2Mercator() | WGS84 (度)到 web墨卡托投影(米) |
SpaProjection.mercator2LonLat() | web墨卡托投影(米)到 WGS84(度) |
针对图层类的空间分析功能,通过com.zondy.mapgis.analysis.spatialanalysis.SpatialAnalysis类接口实现。
接口 | 说明 |
---|---|
SpatialAnalysis.buffer() | 缓冲区分析 |
SpatialAnalysis.overlay() | 叠加分析 |
SpatialAnalysis.clip() | 裁剪分析 |
实现方法
空间分析的整体思路基本一致,如下图所示,不同功能之间需调用不同的接口,传递不同的参数,获取不同的结果。
(1) 分析对象获取:获取待分析的几何图形对象或几何对象,一般可通过交互操作在地图中选取或者通过查询操作得到;
(2) 空间分析对象准备:创建空间分析对象(如GeometryOperator或SpatialAnalysis类对象),然后准备待分析的几何对象;
(3) 实现空间分析:调用空间分析接口实现空间分析并返回分析结果,如buffer()、clip()、overlay()、union()、difference()、symDifference()等;
(4) 结果处理:将空间分析得到的结果进行展现,一般将得到的分析结果转为图形对象,然后通过图形覆盖物在地图上展示。